package org.aeon.gamechatnest.common.enumeration;

import lombok.Getter;

import java.util.EnumSet;
import java.util.Set;
import java.util.stream.Stream;

/**
 * @author: MissingAeon
 * @date: 2024/5/11 10:37
 * @description: 默认存在于数据库的常用角色枚举
 * 用于在创建群组等时，默认赋予的群组角色
 */

public enum DefaultRoleEnum {
    // 创建者
    CREATOR("创建者", Set.of(1L)),

    // 管理员
    ADMIN("管理员", Set.of(2L)),

    // 普通成员
    MEMBER("普通成员", Set.of(5L, 11L, 14L, 15L, 17L, 19L)),

    // 新增成员
    NEW_MEMBER("新增成员", Set.of(5L, 11L, 14L, 15L, 17L, 19L)),

    // 访客
    // GUEST("访客", Set.of(1L)),

    // 机器人
    // ROBOT("机器人", Set.of(1L)),
    ;

    private final String roleName;

    /**
     * 默认角色对应的权限id
     */
    @Getter
    private final Set<Long> authorityIds;

    DefaultRoleEnum(String roleName, Set<Long> authorityIds) {
        this.roleName = roleName;
        this.authorityIds = authorityIds;
    }

    /**
     * 获取所有枚举的流
     *
     * @return
     */
    public static Stream<DefaultRoleEnum> stream() {
        return EnumSet.allOf(DefaultRoleEnum.class).stream();
    }

    @Override
    public String toString() {
        return roleName;
    }
}
